// 简化版广告管理工具类 - 用于测试
class AdManager {
  constructor() {
    this.rewardedVideoAd = null
    this.isLoading = false
    this.platform = this.getPlatform()
    this.init()
  }
  
  /**
   * 获取当前平台
   */
  getPlatform() {
    // #ifdef MP-WEIXIN
    return 'miniprogram'
    // #endif
    
    // #ifdef H5
    return 'h5'
    // #endif
    
    return 'unknown'
  }
  
  /**
   * 初始化广告管理器
   */
  init() {
    if (this.platform === 'miniprogram') {
      // #ifdef MP-WEIXIN
      this.initRewardedVideoAd()
      // #endif
    }
  }
  
  /**
   * 初始化激励视频广告
   */
  initRewardedVideoAd() {
    // #ifdef MP-WEIXIN
    if (wx.createRewardedVideoAd) {
      this.rewardedVideoAd = wx.createRewardedVideoAd({
        adUnitId: 'adunit-rewardedvideo'
      })
      
      // 监听广告加载成功
      this.rewardedVideoAd.onLoad(() => {
        console.log('激励视频广告加载成功')
        this.isLoading = false
      })
      
      // 监听广告加载失败
      this.rewardedVideoAd.onError((err) => {
        console.error('激励视频广告加载失败:', err)
        this.isLoading = false
      })
      
      // 监听广告关闭
      this.rewardedVideoAd.onClose((res) => {
        console.log('激励视频广告关闭:', res)
        this.handleAdClose(res)
      })
    } else {
      console.warn('当前微信版本不支持激励视频广告')
    }
    // #endif
  }
  
  /**
   * 显示激励视频广告
   * @returns {Promise} 广告播放结果
   */
  showRewardedVideoAd() {
    return new Promise((resolve, reject) => {
      if (this.platform === 'miniprogram') {
        this.showMiniprogramRewardedVideoAd(resolve, reject)
      } else {
        reject(new Error('当前环境不支持激励视频广告'))
      }
    })
  }
  
  /**
   * 显示小程序激励视频广告
   */
  showMiniprogramRewardedVideoAd(resolve, reject) {
    // #ifdef MP-WEIXIN
    if (!this.rewardedVideoAd) {
      reject(new Error('激励视频广告未初始化'))
      return
    }
    
    // 设置广告回调
    this.adPromiseResolve = resolve
    this.adPromiseReject = reject
    
    // 记录广告开始时间
    this.adStartTime = Date.now()
    
    // 显示广告
    this.rewardedVideoAd.show().catch((err) => {
      console.error('显示激励视频广告失败:', err)
      reject(new Error('广告显示失败: ' + err.errMsg))
    })
    // #endif
  }
  
  /**
   * 处理广告关闭事件
   * @param {Object} res - 关闭结果
   */
  async handleAdClose(res) {
    try {
      // 简化的广告观看记录
      const adViewData = {
        adType: 'rewardedVideo',
        platform: this.platform,
        viewDuration: Date.now() - this.adStartTime,
        isCompleted: res && res.isEnded,
        timestamp: this.adStartTime
      }
      
      console.log('广告观看记录:', adViewData)
      
      // 如果用户完整观看了广告
      if (res && res.isEnded) {
        // 模拟奖励数据
        const rewardData = {
          points: 1,
          type: 'ad_reward',
          timestamp: Date.now()
        }
        
        this.adPromiseResolve && this.adPromiseResolve({
          success: true,
          completed: true,
          reward: rewardData
        })
      } else {
        // 用户中途退出
        this.adPromiseResolve && this.adPromiseResolve({
          success: true,
          completed: false,
          message: '需要完整观看广告才能获得奖励'
        })
      }
    } catch (error) {
      console.error('处理广告奖励失败:', error)
      this.adPromiseReject && this.adPromiseReject(error)
    }
  }
  
  /**
   * 获取今日观看限制
   * @returns {Promise} 限制信息
   */
  async getTodayAdLimit() {
    try {
      // 模拟限制信息
      return {
        todayCount: 0,
        dailyLimit: 50,
        canWatch: true,
        rewardPoints: 1
      }
    } catch (error) {
      console.error('获取广告限制失败:', error)
      throw error
    }
  }
  
  /**
   * 检查是否可以观看广告
   * @returns {Promise<boolean>} 是否可以观看
   */
  async canWatchAd() {
    try {
      const limitInfo = await this.getTodayAdLimit()
      return limitInfo.canWatch
    } catch (error) {
      console.error('检查广告限制失败:', error)
      return false
    }
  }
}

// 创建单例实例
const adManager = new AdManager()

export default adManager